package fifth.引用传递.接受本类引用传递的范例.范例二;

/**
 * 进一步深入一对一关系
 * 范例一完成了一个基本的要求
 * 新要求：如果一个人有一个孩子 每个孩子有一本书 该如何分析
 * 难道再新建一个孩子类吗 bushi
 * 因为孩子也是一个人 所以稍微修改一下Person类就行
 */
class Person {
    private String name;
    private int age;
    private Book book;
    // 新增一个孩子属性
    private Person child;


    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Book getBook() {
        return book;
    }

    public void setBook(Book book) {
        this.book = book;
    }

    public void setChild(Person child) {// 设置孩子
        this.child = child;
    }

    public Person getChild() {   // 得到孩子
        return child;
    }
}

class Book {
    private String title;
    private double price;
    private Person person;

    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    public Person getPerson() {
        return person;
    }
}
    public class RefCase2 {
        public static void main(String[] args) {
            Person p = new Person("刘能", 99);
            // 定义一个孩子
            Person c = new Person("odyssey", 18);
            Book b = new Book("Java入门与精通", 88.88);
            Book cb = new Book("一千零一夜", 2);// 定义孩子独有的书籍
            // 设置对象之间的关系
            p.setBook(b);// 一个有一本书
            b.setPerson(p);// 一本书属于一个人
            c.setBook(cb);// 一个孩子有一本书
            cb.setPerson(c);// 一本书属于孩子
            p.setChild(c);// 一个人有一个孩子

            //通过人找到孩子 并找到孩子拥有的书
            System.out.println(p.getName()+"的孩子->姓名："+p.getChild().getName()+" 年龄:"+p.getChild().getAge()+" 书名："+p.getChild().getBook().getTitle());


        }
    }

